An accumulator is an electronic circuit which is used to sum numerical data represented by signals. Typically, an accumulator receives two or more signals and then adds the signals together to form a sum. Accumulator circuits are used in a wide variety of applications. For instance, almost every computer ever built includes an accumulator.
Conventional accumulators include two different types of accumulators: serial accumulators and parallel accumulators. Both the serial and parallel accumulator provide the same basic function, that is, they both produce a sum by adding together a plurality of input signals. However, the serial and parallel accumulators differ in their structure and performance speed. The serial accumulator sums a sequence of input signals which are received over a period of time; whereas the parallel accumulator sums a plurality of input signal which are received simultaneously. In regard to circuit structure, the serial accumulator comprises an adder connected to a register; whereas the parallel accumulator comprises an adder tree connected to a register. The adder is a circuit which adds two signals together to produce a sum. The adder tree is a circuit which adds three or more signals together to produce a sum. The register is a memory circuit which stores the sum.
FIG. 1 shows a prior art serial accumulator circuit. The serial accumulator includes an adder 11 and a register 12. The serial accumulator receives a sequence of input signals, over time, on a first input 10. Also, the adder 11 receives a signal representing the sum stored in the register 12 on a feedback path 13. The adder 11 sums the signals received on the first input 10 and the feedback path 13 to produce a result which is then stored in the register 12. After receiving the entire sequence of input signal, the sum stored in the register 12 represent the sum of the input signals. The accumulator provides the contents of the register 12 as a signal on an output 14.
Serial accumulators suffer because they can only sum one input at a time. This negatively impacts the serial accumulator's applicability to many engineering problems. For example, in a computer the serial accumulator will seriously degrade data processing speed if it is used to sum a large number of input signals.
FIG. 2 shows a prior art parallel accumulator circuit. The parallel accumulator circuit comprises an adder tree 16 and a register 17. The adder tree 16 simultaneously receives a plurality of input signals on inputs 15 and in turn produces a sum which is then stored in register 17. The sum is represented by a signal on output 18. The adder tree 16 includes a plurality of adders which are connected together in a fashion which allows three or more input signals to be summed concurrently. When using the adder tree topology depicted by FIG. 2, N-1 adders are required to sum N inputs. For example, as shown in FIG. 2, eight input signals can be received simultaneously, thus, seven adder are required in the adder tree. If one wishes to sum a greater number input signals, then more adders are required. For instance, in order to sum sixty-four input signals, the adder tree would require sixty-three adders.
Although parallel accumulators are much faster than serial accumulators, parallel accumulator are at a disadvantage because they require a large number of adders, and hence, a large amount of space when implemented in an integrated circuit. This fact makes parallel accumulators impractical in many engineering applications.
There is thus a need for an accumulator circuit that is capable of summing concurrent input signals without requiring a large amount of area on an integrated circuit and without incurring a large processing delay.